83.链表 |
您所在的位置:网站首页 › ReWorks REDE添加头文件 › 83.链表 |
链表
在发展2方法的基础上,不要一次性的分配n个指针的内存! 每次使用malloc为新的结构体分配内存空间时,也为指向该结构体的指针(新指针)分配内存。 但是,如果这样做的话,还需要另外一个指针跟来跟踪新分配的指针,因为使用malloc的返回值是一个指针,需要“另外一个指针”来跟踪新指针。那这“另外一个指针”也需要一个指针来跟踪,,以此类推,需要重新设计结构体才能解决该问题。 就是在每个结构体中要包含指向下一个结构体next的指针,当创建新结构时,把该结构的地址存储在上一个结构体中 (其中的指针)。 举例: #define NAME_SIZE 20//人名字符大小 typedef struct peoplecard { char name[NAME_SIZE]; int age; peoplecard* next;//指向下一个结构体的指针 };知识点: 结构不能含有与结构本身类型相同的结构,但是可以含有指向同类型结构的指针,这是链表的基础。链表的每一项都包含在何处能找到下一项结构体的信息(指针)。 举例: 用户输入人名为Tom,年龄为20,程序将为people_card 类型的结构体分配内存, 如果该结构体后面没有其他的结构体,程序需要把指向下一个结构体指针next设置为NULL。 因为第一个结构体是没有其他结构体的next记录的,所以还需要一个单独的结构体指针存储第一个结构体的地址,这个指针可以被称为头指针或根指针(head或root)。 重新设计数据结构,每个结构中都包含指向下一个结构体的指针,当创建新的结构体时,可以把该结构体的地址存储在上一个结构体的next指针中。 新设计的结构示意图如下: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |